//===================================================================
  rialto.widget.FenetreModale= function(nomFenFi
                         ,top,left,width,height
                         ,contenu,titreFenetre
                         ,bWithBtonClose
                         ,bMobile,bReDim
                         ,suffFond
                         ,modeAffContenu
                         ,bWithSB
                         ,zonesCtrlees
                         ,oCiuLie
                         ,modeMasque
)
//====================================================================
// Classe de base de PopUp
// octroie la possibilite suppl?mentaire de ReDim  et un cadre de masquage transparent par defaut
// ainsi qu' une gestion plus fine des zones occult?es ( ? revoir)
{
if (arguments.length == 0) return;
//n'influe que sur deleteCiu delObjHtmlCiu ; ? supprimer apres surcharge de ces methodes dans cette classe
this.bModale = true;

// r?cup?ratin d'1 div masque cr?? dans pageGarde
var suffFond = suffFond || 'gris';
this.suffFond = suffFond;
var masque;

masque = rialto.session? (rialto.session.masque?rialto.session.masque : null)
                           : null;                 
// pas de masque g?n?ral   (ce test devra ?tre supprim? pour b?n?ficier d'une granularit? plus fine dans le controle de servlet
/*
  if (    (!masque)
      ||  (zonesCtrlees != null) ) {
*/
  
  // aucune zone sp?cifi?e : l ensemble du document est masqu? => l'op?ration prot?g?e par la fenetre modale est en concurrence
  this.emprise = new Array;
  if (!zonesCtrlees) 
    this.emprise[0] = window.document.body;
  else
  if (!zonesCtrlees instanceof Array)
    this.emprise[0] = zonesCtrlees ;
  else
    this.emprise = zonesCtrlees ;

  this.comportVerrouillage = MasqueZones;
  masque = this.comportVerrouillage(suffFond,this.emprise,oCiuLie,modeMasque);  
  
/*}

// un masque g?n?ral existe , on l utilise ( ? supprimer ult?rieurement , assure la compatibilit? de comportement )
else {
  masque.className = 'ecranMasque'+suffFond; //'Gris';
  masque.style.display='block'; 
}
*/
     

this.base         = CadreFenetre;
this.base(nomFenFi,top,left,width,height,'auto'
          ,contenu,titreFenetre
          ,masque
          ,bWithSB
          ,0               // = pas de boutons Min, Res ou Max
          ,bWithBtonClose
          ,bMobile,bReDim
          ,modeAffContenu);
     

if (bMobile)
   this.comportMobileFen();

if (bReDim)
   this.comportReDimFen();
   

}
rialto.widget.FenetreModale.prototype = new CadreFenetre;

rialto.widget.FenetreModale.prototype.baseRemove = CadreFenetre.prototype.remove;
rialto.widget.FenetreModale.prototype.remove = function (){
//--------------------------------
   this.baseRemove();
//   this.container.containerHtml.style.display = 'none';
// this.container.containerHtml.parentNode.removeChild(this.container.containerHtml);

/**/   for (var e=0; e < this.emprise.length; e++) {
   if ( (nbRef = this.emprise[e].lastChild.suppRef(this)) == 0)
//       this.emprise[e].removeChild(this.emprise[e].lastChild);        // a revoir un peu dangereux mieux vaut identifier les masques        
       this.emprise[e].lastChild.style.display = 'none';        // simple masquage : masque conserv?   
 }
/**/}


//============================================
  rialto.widget.PopUp=function (nomFenFi
                         ,top,left,width,height
                         ,contenu,titreFenetre
                         ,suffFond
                         ,modeContainer
                         ,bSansBtonClose
                         ,oCiuLie)
//============================================
// Fenetre modale de type Top : son container est un voile plac? sur le document (window.document.body)
// Elle est pleinement modale / document (exclusivit? de l'interaction avec l'utilisateur)
// Cette exclusivit? n'emp?che pas la pr?sence de plusieurs popups, mais une seule est active ? un moment
// Elle est garantie en pla?ant des voiles sur tous les popups sauf celle active
// Le voile est "masqu?" ? la fermeture de la derni?re popup

// Seult un bouton de fermeture et la mobilit? de la fen?tre
// Choix du fond :  gris? (par defaut) ou transparent
{
if (arguments.length == 0) return;

this.typeFen = 'PopUp';
this.base         = rialto.widget.FenetreModale;
this.base( nomFenFi,
           top,left, width,height,
           contenu,titreFenetre,
           !bSansBtonClose,      // = avec bouton close ?
           true,false            // = mobile + taille fixe
           ,suffFond ||'Gris'
           ,modeContainer
           ,false                // = pas de barre d' ?tat
           ,window.document.body    // tout le document est masqu? = p?rim?tre du mode modal 
           ,oCiuLie
           ,'strict'            // modeMasque = 'strict' --> pas de cohabitation de popup
           );
           
// a revoir rendre ces m?thodes priv?es
  var activationEnd   = rialto.widget.PopUp.prototype.afterActive;
  var inactivationEnd = rialto.widget.PopUp.prototype.afterInactive;
  //Array of child
  this.arrChild=new Array;
           
}
rialto.widget.PopUp.prototype = new rialto.widget.FenetreModale;

rialto.widget.PopUp.prototype.baseRemove = CadreFenetre.prototype.remove;
rialto.widget.PopUp.prototype.remove = function (){
//--------------------------------
//alert('remove popup '+this.titreFenetre);
//alert('this.container.eltActif()= '+this.container.eltActif().id);
   this.baseRemove();
   // suppression du masque (qui est le container de la fenetre popup)
//   this.container.containerHtml.parentNode.removeChild(this.container.containerHtml);

   // soit il n y a plus de popup  
   // soit il reste une popup de type ctrl masqu?e (cadreFenetre.reserve == true)  (fenCtrlWait)  ( a revoir)
   // -> on masque le voile-container
   if (    (this.container.nbElts() == 0)
        || (    (this.container.nbElts() == 1)
            &&  (this.container.eltActif().reserve))   // ? revoir
       ) {
       this.container.containerHtml.style.display = 'none';
   }
   //call child remove
	for(var i=0;i<this.arrChild.length;i++){ 
		if(this.arrChild[i].remove){
		        this.arrChild[i].remove(true);
	    }
	}
}

rialto.widget.PopUp.prototype.afterActive = function () {
//-------------------------
// suppression du voile rendant la popup inactive
    if (this.masque) 
        this.cadreExterne.removeChild(this.masque);
        
    this.$$activeContent();
}

rialto.widget.PopUp.prototype.$$activeContent=rialto.widget.AbstractContainer.prototype.$$activeContent;

rialto.widget.PopUp.prototype.afterInactive = function () {
//---------------------------
// superposition d'un voile rendant la popup inactive
  this.comportVerrouillage = MasqueZones;
  this.masque = this.comportVerrouillage('transparent',this.cadreExterne);  
}

rialto.widget.PopUp.prototype.reafficheFen=function(){
    this.reserve = false;
    this.cadreExterne.style.display	='block';
    this.eltContainer.className 	= 'ecranMasque'+this.suffFond;    
    this.eltContainer.style.display = 'block';  
}
rialto.widget.PopUp.prototype.display = rialto.widget.PopUp.prototype.reafficheFen;
//=====================

rialto.widget.PopUp.prototype.masqueFen= function(){
    this.reserve = true;
    this.cadreExterne.style.display='none';
    this.eltContainer.style.display = 'none';    
}
rialto.widget.PopUp.prototype.hidden = rialto.widget.PopUp.prototype.masqueFen;
//=====================


//============================================
  rialto.widget.Dialog=function (nomFenFi
                         ,top,left,width,height
                         ,contenu,titreFenetre
                         ,suffFond
                         ,modeContainer
                         ,emprise
                         ,oCiuLie
                         )
//============================================
// Pas de bouton de fermeture stdt, mobilit? de la fen?tre
// Choix du fond :  gris? (par defaut) ou transparent
{
if (arguments.length == 0) return;
this.typeFen = 'Dialog';  // sera ecras? ? revoir mais pour quel usage ?
this.base         = rialto.widget.PopUp;
this.base( nomFenFi
           ,top,left, width,height
           ,contenu,titreFenetre
           ,suffFond ||'Gris'
           ,modeContainer
           ,true      // = sans bouton close 
           ,emprise
           ,oCiuLie
           );
}
/* ne fctione pas a revoir
rialto.widget.Dialog.close = function () {
//=============================================
// public
   traceExec('Dialog close -> fermeFen',31)
   this.fermeFen();
}
*/
rialto.widget.Dialog.prototype = new rialto.widget.PopUp;


/* a implementer apre modif de CadreFenetre.deleteCiu delObjHtmlCiu
rialto.widget.FenetreModale.prototype.baseDelObjHtmlCiu = CadreExterne.prototype.delObjHtmlCiu;
rialto.widget.FenetreModale.prototype.delObjHtmlCiu = function (id){
//======================
          this.baseDelObjHtmlCiu(id);
          this.deleteMasque();
}

rialto.widget.FenetreModale.prototype.baseDeleteCiu = CadreExterne.prototype.deleteCiu;
rialto.widget.FenetreModale.prototype.deleteCiu = function (id){
//===============================
          this.baseDeleteCiu(id);
          this.deleteMasque();
}
*/



//======================================================
  rialto.widget.FenetreTop = function(     nomFenFi,
                           top,left,width,height,
                           contenu,titreFenetre,bWithSB,
                           typePanelBtons,
                           bMobile,bReDim,
                           modeAffContenu,
                           bWithoutBtonClose,
                           optionsMode
                           )
//======================================================
{
traceExec('FenetreTop modeAffContenu= '+modeAffContenu,75);
if (arguments.length == 0) return;
this.base         = CadreFenetre;
this.base(nomFenFi,
          top,left,width,height,'auto',contenu,titreFenetre,"_fenPrinc_", bWithSB,
          typePanelBtons || 'stdt',
          !bWithoutBtonClose,
          bMobile,bReDim,modeAffContenu,optionsMode);

document.onMouseDown = function(e) {
  stopDefault(e);
}

if (bMobile)
   this.comportMobileFen();

if (bReDim)
   this.comportReDimFen();

}

rialto.widget.FenetreTop.prototype = new CadreFenetre;


//===================================================
  rialto.widget.Fenetre=function (nomFenFi
                   ,top,left,width,height,heightExtern
                   ,contenu,titreFenetre
                   ,eltContainer
                   ,bMobile,bReDim
                   ,typePanelBtons
                   ,bWithSB
                   ,modeAffContenu
                   ,optionsMode)
//====================================================
{
if (arguments.length == 0) return;
this.base                    = CadreFenetre;
this.base(nomFenFi
          ,top,left,width,height,heightExtern
          ,contenu,titreFenetre
          ,eltContainer
          ,bWithSB
          ,typePanelBtons || 'stdt'
          ,true                                   // = avec bton Close
          ,bMobile,bReDim,modeAffContenu,optionsMode);

if (bMobile)
   this.comportMobileFen();

if (bReDim)
   this.comportReDimFen();
}
rialto.widget.Fenetre.prototype = new CadreFenetre;




//================================================
  rialto.widget.FenetreAjustExt = function (nomFenFi
                            ,contenu,titreFenetre
                            ,eltContainer
                            ,bWithBtonMinMax
                            ,bWithoutBtonClose
//                            ,style
//                            )
                  ,modeAffContenu
                   ,optionsMode)
//================================================
// taille s'adaptant automatiquement ? l'elt Html parent
// pas de bouton restaure
// pas de comportement RS et DD
// style au choix
// boutons MinMax et Close optionnels
{
//this.typeFen = 'FenetreAjustExt';
if (arguments.length == 0) return;
this.base         = rialto.widget.Fenetre;
this.base( nomFenFi,
           0,0, '100%','100%','100%',
           contenu,titreFenetre,
           eltContainer
           ,false,false  // = non ReDim, non DragAndDrop
           ,bWithBtonMinMax ? '1:Min-Max' : '0'
           ,false     // = sans barre d'?tat
            ,modeAffContenu
            ,optionsMode
           );
}
rialto.widget.FenetreAjustExt.prototype = new rialto.widget.Fenetre;

// ************************************************************************************************
// Objet type FENETRE D'affichage de data
// VERSION:
// DATE:13/09/2004
// ************************************************************************************************
// PROPRIETES DE cr?ation :                                                                 OBLIGATOIRE
// widh:               largeur en pixel (? partir du haut de l'?cran)                          OUI
// height:             hauteur en pixel (? partir de la gauche de l'?cran)                     OUI
// divData:            div contenant le donn?es                                                OUI
// titre:              Titre de la pop up                                                      OUI
// ************************************************************************************************

// *************************************
// CONSTRUCTEUR DE L'OBJET
// *************************************

rialto.widget.objFenData=function(width,height,divData,titre){
    
    var oThis=this;
    //pop up
    widthGlobal=document.body.clientWidth;
    heightGlobal=document.body.clientHeight;  
    var top=(heightGlobal/2)-120;
    var left=(widthGlobal/2)-100;
    this.fen = new rialto.widget.PopUp("fen",top,left,width,height,"",titre,"transparent");
        
    //on cree la div contenant les d?tails
    this.divData=divData;
    this.divData.className="libNormal";
    this.divData.style.width=width-25;
    this.divData.style.height=height-35;
    this.divData.style.border="1px outset white";
    this.divData.style.position="absolute";
    this.divData.style.overflow="auto";
    this.divData.style.top=5;
    this.fen.add(this.divData);       
    
    
    this.fen.onClose=function(){oThis.onclose();};
    
    //Insertion du bouton quitter
    var wBtn=parseInt(width)/2-50;
    var hBtn=height-25;    
    this.BQUIT = new rialto.widget.Button(hBtn,wBtn,"Fermer","Fermer la fenetre");        
    this.BQUIT.onclick=function () {
        oThis.onclose();
        this.fen.closeFen();            
    }; 
    this.BQUIT.fen=this.fen;
    this.fen.add(this.BQUIT);        
}

rialto.widget.objFenData.prototype.onclose=function() {
//le code est d?finit dans la partie applicative de l'IHM
}


// ************************************************************************************************
// Objet type FENETRE D'INFORMATION
// VERSION:
// DATE:13/09/2004
// ************************************************************************************************
// PROPRIETES DE cr?ation :                                                                 OBLIGATOIRE
// Message:                Message a afficher                                                  OUI
// ************************************************************************************************

// *************************************
// CONSTRUCTEUR DE L'OBJET
// *************************************

rialto.widget.Alert=function(mess){
    
    this.message=mess;
    var oThis=this;

    widthGlobal=document.body.clientWidth;
    heightGlobal=document.body.clientHeight;  
    var top=(heightGlobal/2)-120;
    var left=(widthGlobal/2)-100;
            
    this.width=getTailleTexte(mess)+40//div.offsetWidth+60;
    if (this.width<200){this.width=200;};    
    //cr?ation de la fenetre   
    this.fen = new rialto.widget.PopUp("fen",top,left,this.width,50,this.message,"Information","transparent"); 
    
    //Insertion du bouton quitter
    var wBtn=parseInt(this.width)/2-57;
    var hBtn=25;    
    
    this.BQUIT = new rialto.widget.Button(hBtn,wBtn,"Close","close the window");        
    this.BQUIT.onclick=function () {
        oThis.onclose();
        this.fen.closeFen();            
    };         
    this.BQUIT.fen=this.fen;
    this.fen.add(this.BQUIT.getHtmlExt());
}

rialto.widget.Alert.prototype.onclose=function () {
//CODING APPLICATIF
}


